import request from '@/libs/request';

/**
 * 船到商户管理API
 */

/**
 * 获取商户列表
 * @param {Object} params 查询参数
 */
export function getMerchantList(params) {
  return request({
    url: 'chuandao/merchant/list',
    method: 'get',
    params
  });
}

/**
 * 获取商户详情
 * @param {Number} id 商户ID
 */
export function getMerchantInfo(id) {
  return request({
    url: `chuandao/merchant/info/${id}`,
    method: 'get'
  });
}

/**
 * 创建商户
 * @param {Object} data 商户数据
 */
export function createMerchant(data) {
  return request({
    url: 'chuandao/merchant/create',
    method: 'post',
    data
  });
}

/**
 * 验证手机号是否可用
 * @param {String} mobile 手机号
 */
export function checkMobile(mobile) {
  return request({
    url: 'chuandao/merchant/checkMobile',
    method: 'post',
    data: { mobile }
  });
}

/**
 * 商户充值
 * @param {Object} data 充值数据
 */
export function rechargeBalance(data) {
  return request({
    url: 'chuandao/merchant/recharge',
    method: 'post',
    data
  });
}

/**
 * 获取商户余额
 * @param {Number} id 商户ID
 */
export function getMerchantBalance(id) {
  return request({
    url: `chuandao/merchant/balance/${id}`,
    method: 'get'
  });
}

/**
 * 获取商户钱包流水
 * @param {Number} id 商户ID
 * @param {Object} params 查询参数
 */
export function getMerchantWallet(id, params) {
  return request({
    url: `chuandao/merchant/wallet/${id}`,
    method: 'get',
    params
  });
}

/**
 * 获取商户钱包统计数据
 * @param {Number} id 商户ID
 * @param {Object} params 查询参数（支持transaction_type、start_date、end_date筛选）
 */
export function getMerchantWalletStats(id, params) {
  return request({
    url: `chuandao/finance/merchant-stats/${id}`,
    method: 'get',
    params
  });
}

/**
 * 导出商户钱包流水数据
 * @param {Number} id 商户ID
 * @param {Object} params 导出参数（支持transaction_type、start_date、end_date筛选）
 */
export function exportMerchantWalletData(id, params) {
  return request({
    url: `chuandao/merchant/wallet-export/${id}`,
    method: 'get',
    params,
    responseType: 'blob'
  });
}

/**
 * 同步商户余额
 * @param {Number} id 商户ID
 * @param {Object} data 同步参数（可选的操作员ID等）
 */
export function syncMerchantBalance(id, data = {}) {
  return request({
    url: `chuandao/merchant/sync-balance/${id}`,
    method: 'post',
    data
  });
}

/**
 * 获取示例数据
 */
export function getExampleData() {
  return request({
    url: 'chuandao/merchant/example',
    method: 'get'
  });
}

/**
 * 导出商户数据为CSV
 * @param {Object} params 导出参数
 */
export function exportMerchantData(params) {
  return request({
    url: 'chuandao/merchant/export',
    method: 'get',
    params,
    responseType: 'blob'
  });
}

/**
 * 财务管理相关API
 */

/**
 * 获取财务流水列表
 * @param {Object} params 查询参数
 */
export function getFinanceList(params) {
  return request({
    url: 'chuandao/finance/list',
    method: 'get',
    params
  });
}

/**
 * 获取财务统计数据
 * @param {Object} params 查询参数
 */
export function getFinanceStats(params) {
  return request({
    url: 'chuandao/finance/stats',
    method: 'get',
    params
  });
}

/**
 * 核实交易记录
 * @param {Number} id 交易ID
 */
export function verifyTransaction(id) {
  return request({
    url: `chuandao/finance/verify/${id}`,
    method: 'post'
  });
}

/**
 * 批量核实交易记录
 * @param {Array} ids 交易ID数组
 */
export function batchVerifyTransactions(ids) {
  return request({
    url: 'chuandao/finance/batch-verify',
    method: 'post',
    data: { ids }
  });
}

/**
 * 财务流水导出API（标准化双模式支持）
 * 
 * 支持两种导出模式：
 * 1. selected模式：导出选中的记录（通过ids参数）
 * 2. filter模式：按筛选条件导出（默认模式，向后兼容）
 * 
 * @param {Object} params 导出参数
 * @param {string} params.mode 导出模式：'selected'（选中记录）或 'filter'（筛选条件）
 * @param {Array} params.ids 选中的记录ID数组（mode='selected'时必需）
 * @param {string} params.merchant_keyword 商户关键词（mode='filter'时可选）
 * @param {number} params.transaction_type 交易类型（mode='filter'时可选）
 * @param {string} params.start_date 开始日期（mode='filter'时可选）
 * @param {string} params.end_date 结束日期（mode='filter'时可选）
 * 
 * @example
 * // 选中模式导出
 * exportFinanceData({
 *   mode: 'selected',
 *   ids: [1, 2, 3, 4, 5]
 * });
 * 
 * // 筛选模式导出  
 * exportFinanceData({
 *   mode: 'filter',
 *   merchant_keyword: '测试商户',
 *   transaction_type: 1,
 *   start_date: '2024-01-01',
 *   end_date: '2024-01-31'
 * });
 * 
 * // 向后兼容：不传mode参数默认为filter模式
 * exportFinanceData({
 *   merchant_keyword: '测试商户'
 * });
 */
export function exportFinanceData(params) {
  // 统一使用GET请求，与项目标准保持一致
  return request({
    url: 'chuandao/finance/export',
    method: 'get',          // ✅ 统一GET请求
    params: params,         // ✅ 统一params参数，支持ids[]格式
    responseType: 'blob'
  });
}

/**
 * 门店管理相关API
 */

/**
 * 获取门店列表
 * @param {Object} params 查询参数
 */
export function getStoreList(params) {
  return request({
    url: 'chuandao/store/list',
    method: 'get',
    params
  });
}


/**
 * 获取门店详情
 * @param {Number} id 门店ID
 */
export function getStoreInfo(id) {
  return request({
    url: `chuandao/store/info/${id}`,
    method: 'get'
  });
}


/**
 * 更新门店状态
 * @param {Number} id 门店ID
 * @param {Number} status 状态
 */
export function updateStoreStatus(id, status) {
  return request({
    url: `chuandao/store/status/${id}`,
    method: 'post',
    data: { status }
  });
}

/**
 * 获取门店订单列表
 * @param {Number} storeId 门店ID
 * @param {Object} params 查询参数
 */
export function getStoreOrders(storeId, params) {
  return request({
    url: `chuandao/store/orders/${storeId}`,
    method: 'get',
    params
  });
}

/**
 * 导出门店数据为CSV（标准化双模式导出架构）
 * @param {Object} params 导出参数
 * @param {string} params.mode 导出模式：'selected'（选中记录）或 'filter'（筛选条件）
 * @param {Array} params.ids 选中的记录ID数组（mode='selected'时必需）
 * @param {string} params.store_keyword 门店关键词（mode='filter'时可选）
 * @param {string} params.merchant_keyword 商户关键词（mode='filter'时可选）
 * @param {number} params.status 状态筛选（mode='filter'时可选）
 */
export function exportStoreData(params) {
  // 统一使用GET请求，与订单导出保持一致
  return request({
    url: 'chuandao/store/export',
    method: 'get',
    params: params,
    responseType: 'blob'
  });
}

/**
 * 订单管理相关API
 */

/**
 * 获取订单列表
 * @param {Object} params 查询参数
 */
export function getOrderList(params) {
  return request({
    url: 'chuandao/order/list',
    method: 'get',
    params
  });
}

/**
 * 获取订单统计数据
 * @param {Object} params 查询参数
 */
export function getOrderStats(params) {
  return request({
    url: 'chuandao/analytics/dashboard',
    method: 'get',
    params
  });
}

/**
 * 获取订单详情
 * @param {Number} id 订单ID
 */
export function getOrderDetail(id) {
  return request({
    url: `chuandao/order/detail/${id}`,
    method: 'get'
  });
}

/**
 * 获取骑手实时位置
 * @param {Number} orderId 订单ID
 */
export function getRiderLocation(orderId) {
  return request({
    url: `chuandao/order/rider-location/${orderId}`,
    method: 'get'
  });
}

/**
 * 刷新订单状态
 * @param {Number} id 订单ID
 */
export function refreshOrderStatus(id) {
  return request({
    url: `chuandao/order/refresh-status/${id}`,
    method: 'post'
  });
}

/**
 * 批量刷新订单状态
 * @param {Array} orderIds 订单ID数组
 */
export function batchRefreshStatus(orderIds) {
  return request({
    url: 'chuandao/order/batch-refresh-status',
    method: 'post',
    data: { order_ids: orderIds }
  });
}

/**
 * 取消订单
 * @param {Object} params 取消参数
 */
export function cancelOrder(params) {
  return request({
    url: 'chuandao/order/cancel',
    method: 'post',
    data: params
  });
}

/**
 * 导出订单数据
 * @param {Object} params 导出参数
 */
export function exportOrderData(params) {
  return request({
    url: 'chuandao/order/export',
    method: 'get', // 修改为GET方法
    params: params, // 使用params而不是data
    responseType: 'blob'
  });
}